// 全局API请求函数
async function apiRequest(url, options = {}) {
    const token = localStorage.getItem('token');
    
    // 添加Authorization头
    if(token) {
        options.headers = {
            ...options.headers,
            'Authorization': `Bearer ${token}`
        };
    }
    
    try {
        const response = await fetch(url, options);
        
        // Token过期时尝试刷新
        if(response.status === 401) {
            const newToken = await refreshToken();
            if(newToken) {
                // 用新token重试请求
                options.headers['Authorization'] = `Bearer ${newToken}`;
                return await fetch(url, options);
            }
        }
        
        return response;
    } catch (error) {
        console.error('API请求错误:', error);
        throw error;
    }
}

// Token刷新函数
async function refreshToken() {
    try {
        const response = await fetch('https://api.kljmgzs.cn:8180/api/token/refresh', {
            method: 'GET',
            headers: {
                'Authorization': `Bearer ${localStorage.getItem('token')}`
            }
        });
        
        if(response.ok) {
            const data = await response.json();
            localStorage.setItem('token', data.token);
            return data.token;
        }
    } catch (error) {
        console.error('Token刷新失败:', error);
    }
    
    // 刷新失败，跳转登录
    localStorage.removeItem('token');
    localStorage.removeItem('isLoggedIn');
    window.location.href = 'login.html';
    return null;
}

// 更新登录检查函数
let isChecking = false;

async function checkLogin() {
    // 防止重复检查
    if(isChecking) return true;
    isChecking = true;
    
    const publicPages = ['login.html'];
    const isPublicPage = publicPages.some(page => 
        window.location.pathname.endsWith(page)
    );
    
    // 如果是公开页面，不需要检查
    if(isPublicPage) {
        isChecking = false;
        return true;
    }
    
    // 检查token是否存在
    const token = localStorage.getItem('token');
    if(!token) {
        redirectToLogin();
        return false;
    }
    
    // 验证token有效性
    try {
        const response = await apiRequest('https://api.kljmgzs.cn:8180/api/token/check');
        if(!response.ok) {
            redirectToLogin();
            return false;
        }
    } catch (error) {
        console.error('Token检查错误:', error);
        redirectToLogin();
        return false;
    }
    
    isChecking = false;
    return true;
}

function redirectToLogin() {
    localStorage.removeItem('token');
    localStorage.removeItem('isLoggedIn');
    // 使用replace而不是href，避免历史记录问题
    window.location.replace('login.html');
}

// 在页面加载时调用
checkLogin();